﻿//命名空间的作用
#include <stdio.h>
#include <stdlib.h>
namespace zh//bit是命名空间的名字，按需求自定义。
{
	// 命名空间中可以定义变量/函数/类型
	int rand = 10;
}

int main()
{
	// 这⾥默认是访问的是全局的rand函数指针
	printf("%p\n", rand);
	// 这⾥指定bit命名空间中的rand
    printf("%d\n", zh::rand);
	return 0;
}


//命名空间的三种使用方式
#include<stdio.h>
namespace zh
{
	int a = 0;
	int b = 1;
}

using namespace zh;// 展开命名空间中全部成员
int main()
{
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}
 
using zh::b;// using将命名空间中某个成员展开
int main()
{
	printf("%d\n", zh::a);
	printf("%d\n", b);
	return 0;
}

// 指定命名空间访问
int main()
{
	printf("%d\n", zh::a);
	printf("%d\n", zh::b);
	return 0;
}


//命名空间的嵌套定义
#include<stdio.h>
namespace zh
{
	namespace dg
	{
		int rand = 1;
		int Add(int left, int right)
		{
			return left + right;
		}
	}
	namespace xd
	{
		int rand = 2;
		int Add(int left, int right)
		{
			return (left + right) * 10;
		}
	}
}

int main()
{
	printf("%d\n", zh::dg::rand);
	printf("%d\n", zh::xd::rand);
	printf("%d\n", zh::dg::Add(1, 2));
	printf("%d\n", zh::xd::Add(1, 2));
	return 0;
}


